﻿#define _CRT_SECURE_NO_WARNINGS 1
/*
#include<stdio.h>
int main()
{
	int age = 16;
	if (age < 18)
		printf("未成年\n");  //if执行单条语句时不用括号
	else
		printf("已成年\n");

	return 0;
}*/
//#include <stdio.h>
//int main()
//{
//	int age = 10;
//	if (age < 18)   //if执行多条语句
//	{
//		printf("未成年\n");
//		printf("不能谈恋爱\n");
//	}
//	
//	else if (age >= 18 && age < 28)
//	{
//		printf("青年\n");
//		printf("恋爱自由\n");
//	}
//	else if (age >= 28 && age < 50)
//		printf("壮年\n");
//	else
//		printf("退休\n");
	/*
	else
	{
		if (age >= 18 && age < 28)
			printf("青年\n");
		else if (age >= 28 && age < 50)
			printf("壮年\n");
		else
			printf("退休\n");
	}
	return 0;
}*/
//*******************
/*
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (a == 2)
			printf("haha\n");
		else             //没有括号的情况下，else是与离上面最近的if相匹配
			printf("hehehe\n");
	return 0;
}*/  
//*****************
/*
#include <stdio.h>
int main()
{
	int num = 4;
	//if (num = 5)    //  =是赋值；==判断相等
	if(num==5)        //优化代码 if(5==num)
		printf("hehe\n");  
	return 0;
}*/
//*******************************
//	if (condition)
//	{
//		return x;
//	}
//	else
//	{
//		return y;
//	}
//*****************************************不理解

/*
#include <stdio.h>
int main()
{
	int a = 0;
	int b;
	for (b = 0; b<50; b++)
	{
		a++;
		if (a % 2 == 0)
			a++;
		
		 printf("%d\n", a);
		
	}
	return 0;
}*/
//*******************************************不理解





/*     switch--适合多分支
switch (整形表达式)
{
	case 整形常量表达式： 语句1；
		break;
}*/

/*
#include <stdio.h>
int main()
{
	int day = 0;
	scanf_s("%d", &day);
	switch (day)  //      括号里面是 (整形表达式)
	{
	case 1:     // 注意case 后面是整形常量表达式
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;

	}
	return 0;
}*/

/*
#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)      //switch与switch语句之间可以嵌套
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:      //default 语句无顺序，也可以省略
		printf("输入错误\n");
		break;

	}
	return 0;
}*/



//******************************
/*
#include <stdio.h>
int main()
{
	int a = 0;
	while (a < 10)
	{
		if (a == 5)
			break;         //直接终止循环
		   //continue;    //用于终止本次的循环，也就是本次循环中continue后面的代码不会再执行
		printf("%d\n", a);
		a++;
	}
	return 0;
}*/
  

/*
#include<stdio.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)  // 输入ctrl+z  结束 ； EOF-end of file -> -1
	{
		putchar(ch);
	}
	return 0;
}*/
/*
#include<stdio.h>
int main()
{
	int ret = 0;
	int ch = 0;
	char password[20] = { 0 };
	printf("请输入密码:\n");  //输入密码，并存放再password数组中
	scanf("%s", password);     //空格后面的输入会放进缓冲区
	//缓冲区还剩一个'\n',利用getchar把剩下的读取                             
	while ((ch = getchar()) != '\n')
	{
		;
	}
	printf("请输入（Y/N）:\n");
	ret = getchar();
	if (ret == 'y')
		printf("确认成功!\n");
	else
		printf("退出！\n");

	return 0;
}*/
//***************************************
//只输出数字字符
/*
#include <stdio.h>
int main()
{
	int ch = 0;
	while ((ch=getchar())!=EOF)
	{
		if (ch < '0' || ch>'9')
			continue;
		putchar(ch);
	}
	return 0;
}*/
//****************************for循环（for循环的判断部分如果被省略，那判断条件就是恒为正）
/*
#include <stdio.h>
int main()
{
	int a, b;
	for (a = 0, b = 0; b ==0; a++, b++)  //打印一次，注意如果判断是b=0，则没有循环，因为是赋值,若赋值为非零，则死循环
		printf("hehe\n");
	return 0;
}*/
/*
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	for (; a < 10; a++)
	{
		for (; b < 10; b++)
			printf("hehe\n");//只打印10次，因为b初始值在外面，无法自动清零
	}

	return 0;
}*/
/*
#include <stdio.h>
int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; x++, y++)
		printf("haha\n");  //打印两次
	return 0;
}*/



//********************      do....while循环
/*
#include <stdio.h>
int main()
{
	int a = 0;
	do
	{
		if (a == 5)
			continue;
		printf("haha\n"); //打印5次后死循环
		a++;
	} 
	while (a < 10);
	return 0;
}*/
//********************  计算n的阶乘
/*
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int z = 1;
	scanf("%d", &b);
	for (a = 1;a <=b; a++)
	{
		z = z * a;
		
	}
	printf("%d\n", z);

	return 0;
}*/
//**************  n次阶乘的和
/*
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int z = 1;
	int sum = 0;
	int n = 0;
	scanf("%d", &n);
	for (b = 1; b <= n; b++)
	{
		z = 1;         //  注意这里要定义z=1,为了使下面循环过后z值变回1，然后再进行下一次的b循环
		for (a = 1; a <= b; a++)
		{
			z = z * a;
		}
		sum = sum + z;
	}
	printf("%d\n", sum);

	return 0;
}*/
// 代码优化
/*
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int z = 1;
	int sum = 0;
	scanf("%d", &b);
	for (a = 1; a <= b; a++)
	{
		z = z * a;
		sum = sum + z;
	}
	printf("%d\n", sum);
	return 0;

}*/
//**************
/*
#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }； //有序数组
	int sz = sizeof(arr) / sizeof(arr[0]);
	int a = 0;
	int b = 0;
	scanf("%d", &b);
	for (a = 0; a < sz; a++)
	{
		if (b == arr[a])
		{
			printf("找到了,下标为:%d\n", a);
			break;

		}
	}
	if (a == sz)
		printf("不存在这个数\n");

	return 0;

}*/
//***********代码优化——折半查找算法
/*
#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 6;
	int left = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int right = sz - 1;
	
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{

			printf("找到下标是：%d\n", mid);
			break;
		}
	}
	if (left > right)
		printf("找不到下标\n");
	return 0;
}*/
//*****************演示多个字符从两端移动，向中间汇聚
//welcome to bit !!!!!!
//*********************
//w*******************!
//we*****************!!
//...
//welcome to bit !!!!!!
/*
#include <stdio.h>
#include <windows.h>
#include<stdlib.h>
int main()
{
	
		char arr1[] = "welcome to bit !!!!!!";
		char arr2[] = "*********************";
		int left = 0;
		int right = strlen(arr1) - 1; //int right=sizeof(arr1)/sizeof(arr1[0])-2);
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);   //<windows.h> 休息一秒
		system("cls");  //system () 执行系统命令的一个函数，“cls"-清空屏幕  ;   <stdlib.h>
		left++;
		right--;
	}
	printf("%s\n", arr2);
	return 0;
}*/
//******************只允许输入三次密码
/*
#include <stdio.h>
int main()
{ 
	int a = 0;
	char password[20] = { 0 };
	for (a = 0; a < 3; a++)
	{
		printf("请输入密码:");
		scanf("%s", password);
		//if(password=="123456") ==不能用来比较两个字符串是否相等，应该使用strcmp库函数
		if (strcmp(password, "123456" )== 0)
		{
			printf("登录成功\n");
			break;  //如果密码正确，直接跳出循环
		}
		else
		{
			printf("密码错误\n");
		}
	}
	if (a == 3)
		printf("三次密码均错误，将退出程序\n");
	return 0;
}*/

//******************作业
/*
#include<stdio.h>
int main()
{
	int x = 3;
	int y = 3;
	switch(x % 2)    //x==1,从case 1开始
	{
	case 1:
		switch (y)  //从case3开始，没有，就从default开始
		{
		case 0:
			printf("first\n"); 
		case 1:
			printf("second\n");
			break;   
		default:
			printf("hehe\n");  //没有break;继续往下运行
		}
	case 2:
		printf("thrid\n");
	}
		
	return 0;

}*/
//*****************从大到小输出数字
/*
#include <stdio.h>
int main()
{
	int a, b, c, d;
	scanf("%d%d%d", &a, &b, &c);//%d,%d,%d若加逗号或其他符号，输入时也要加
	//实现算法,a中放最大值,b放中间值，c放最小值
	if (a < b)
	{
		d = a;  //将a的值放在d中
		a = b;
		b = d;
	}
	if (a < c)
	{
		d = a;
		a = c;
		c = d;
	}
	if (b < c)
	{
		d = b;
		b = c;
		c = d;
	}
	printf("%d %d %d\n", a, b, c);

	return 0;
}*/
//***********辗转相除法——求两个数的最大公约数(较大值a与较小值b取模得c，若不为零，则b与c取模，若为零，则最大公约数为c,否则再循环）
/*
#include<stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d", & a, &b);
	while (a % b)  //如果取模不为零，则进行循环
	{
		c = a % b; //把模赋给c
		a = b;
		b = c;
	}
	printf("%d", b);
	return 0;
}*/
//**********打印1000年到2000年得之间得润年
//1.能被4整除并且不能被100整除
//或者  2.能被400整除
/*
#include <stdio.h>
int main()
{
	int count = 0;
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if (year % 4 == 0 && year % 100 != 0)
		{
			printf("%d ", year);
			count++;
		}
		else if (year % 400 == 0)
		{
			printf("%d ", year);
			count++;
		}

	}
	printf("\ncount=%d",count);
	return 0;
}*/
/*
#include<stdio.h>
int main()
{
	int count = 0;
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
	if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
	{
		printf("%d ", year);
		count++;
	}
	}
	printf("\ncount=%d", count);
	return 0;
}*/
//*************求素数—>试除法
/*
#include<stdio.h>
int main()
{
	int a = 0;
	int i = 0;
	int count = 0;
	for (a = 1; a <= 100; a++)  //for (a = 1; a <= 100; a+=2)
	{
		for (i = 2; i < a; i++)
		{
			if (a % i == 0)
				break;
		}
		if (i == a)
		{
			printf("%d ", a);
			count++;

			}
	}
	printf("\n总数：%d", count);
	return 0;
}*/
//**********数100内9的个数
/*
#include<stdio.h>
int main()
{
	int a = 0;
	int count = 0;
	for (a = 0; a <= 100; a++)
	{
		if (a % 10 == 9)
			count++;
		if (a / 10 == 9)
			count++;
	}
	printf("count:%d\n", count);

	return 0;
}*/
//计算1/1-1/2+1/3-1/4+1/5...+1/99-1/100的值
/*#include<stdio.h>
int main()
{
	int a = 0;
	double sum = 0.0;
	int flag = 1;
	for (a = 1; a <= 100; a++)
	{
		sum += flag*1.0 / a;
		flag = -flag;
	}
	printf("%lf\n", sum);
	return 0;
}*/
//**************求十个数中的最大值
/*
#include <stdio.h>
int main()
{
	int i = 0;
	int arr[] = { 0};
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int max = arr[0];    //不赋值为0，是为了避免比较值中存在赋值
	int sz = sizeof(arr) / sizeof(arr[0]);   //sizeof () 是一个判断数据类型或者表达式长度的运算符,以字节为单位
	for (i = 1; i < sz; i++)
	{
		if (arr[i] > max)
			max = arr[i];
	}
	printf("max=%d\n", max);
	return 0;
}*/
//********************打印9*9乘法口诀
//1*1
//2*1 2*2
//9*1 9*2 ...9*9
/*
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	for (a = 1; a <=9; a++)
	{
		for (b = 1; b <= a; b++)
		{
			printf("%d*%d=%-2d ", a, b, a * b);   //%-2d 表示打印两位左对齐
		}
		printf("\n");
	}
	return 0;
}*/
//*************电脑随机一个数字，猜数字游戏
/*
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("****************************\n");
	printf("***   1.play   0. exit   ***\n");
	printf("****************************\n");
}
void game()
{
	int ret = 0;    //时间戳=当前计算机时间-计算机的起始时间
	int guess = 0;
	// time_t time(time_t *timer)             NULL表示空指针
	//srand((unsigned int)time(NULL));       //再调用rand函数之前先调用srand函数设置一个随机值，利用时间戳的返回值给srand一个随机值
	ret = rand()%100;   //1. 利用rand()函数生成一个随机数，头文件为<stdlib.h>      %100是为了缩小范围
	//printf("%d\n", ret);
	//猜数字
	while (1)
	{
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess > ret)
			printf("猜大了\n");
		else if (guess < ret)
			printf("猜小了\n");
		else
		{
			printf("binggo!!!\n");
			break;
		}
	}
}
			
int main ()

{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择>:");
		scanf("%d", &input);   // 利用switch为了避免输入非0和1的数
		switch (input)
		{
		case 0:
			printf("退出游戏\n");
			break;
		case 1:
			game();  //进入游戏
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input); //是否进入循环（再玩一次）
	return 0;
}*/
//goto 语句
/*
#include<stdio.h>
int main()
{
	printf("hehe\n");
	goto again;  //跳到again语句
	printf("haha\n");
again:
	printf("huhuhu\n");
	return 0;
}*/
//关机程序（前提在电脑搜索cmd-命令行，输入一下两程序）
//shutdown -s -t 60     //60秒后关机
//shutdown -a           //取消关机
/*
#include <stdio.h>
#include<string.h> //strcmp
#include<stdlib.h> //system
int main()
{
	char input[20] = { 0 };
	system("shutdown - s - t 120");//执行系统函数
again:
	printf("120秒后关机,如果输入：我是猪，就取消关机\n请输入：");
	scanf("%s", input);
	if (strcmp(input, "我是猪") == 0) // 比较字符串
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}*/
//搜索-服务-右击属性
